package com.bw.lib_image

import android.content.Context
import android.view.View
import android.widget.ImageView
import com.bumptech.glide.Glide
import com.bumptech.glide.load.engine.DiskCacheStrategy
import com.bumptech.glide.load.resource.bitmap.CenterCrop
import com.bumptech.glide.load.resource.bitmap.CircleCrop
import com.bumptech.glide.load.resource.bitmap.RoundedCorners

/**
 * 二次封装图片加载器
 */


/**
 *  磁盘缓存策略
 *  DiskCacheStrategy.ALL  缓存原始图片 + 转换后的图片
 *  DiskCacheStrategy.DATA 仅缓存原始图片（未处理的数据）	需要手动处理图片（如自定义解码）
 *  DiskCacheStrategy.RESOURCE	仅缓存转换后的图片（默认策略） 大多数情况，减少磁盘占用
 *  DiskCacheStrategy.NONE	不缓存到磁盘	临时图片（如验证码）
 *  DiskCacheStrategy.AUTOMATIC	自动选择最优策略（默认）
 */

object GlideImageLoader {

    /**
     * context：Context--->可以避免内存泄漏
     */
    fun loadImage(context: Context, imageView: ImageView, url:String){
        Glide.with(context)
            .load(url)
            .error(R.drawable.ic_launcher_background)//图片网址错误时。会显示默认图片
            .placeholder(R.drawable.img)//占位符 当图片还未加载出来时显示  图片加载出来后显示正确图片
            .skipMemoryCache(false)//是否跳过缓存 跳过是为了节省内存
            .diskCacheStrategy(DiskCacheStrategy.RESOURCE)//磁盘缓存策略 执行过一次后 会先从指定的缓存位置加载图片 提高加载图片的速度
            .thumbnail(0.1f)//缩略图
            .centerCrop()//居中显示
            .into(imageView)

    }


    fun loadCircleImage(context: Context, imageView: ImageView, url:String){
        Glide.with(context)
            .load(url)
            .error(R.drawable.ic_launcher_background)//图片网址错误时。会显示默认图片
            .placeholder(R.drawable.img)//占位符 当图片还未加载出来时显示  图片加载出来后显示正确图片
            .skipMemoryCache(true)//是否跳过缓存 跳过是为了节省内存
            .diskCacheStrategy(DiskCacheStrategy.RESOURCE)//磁盘缓存策略 执行过一次后 会先从指定的缓存位置加载图片 提高加载图片的速度
            .thumbnail(0.1f)//缩略图  将原始图像或视频帧的大小缩减到其原始尺寸的某个比例，这里的 0.1f 表示新的尺寸是原始尺寸的10%
            .transform(CenterCrop(), CircleCrop())
            .into(imageView)

    }


    fun loadCornerImage(context: Context, imageView: ImageView, url:String, radius:Int){
        Glide.with(context)
            .load(url)
            .error(R.drawable.ic_launcher_background)//图片网址错误时。会显示默认图片
            .placeholder(R.drawable.img)//占位符 当图片还未加载出来时显示  图片加载出来后显示正确图片
            .skipMemoryCache(true)//是否跳过缓存 跳过是为了节省内存
            .diskCacheStrategy(DiskCacheStrategy.RESOURCE)//缓存策略 执行过一次后 会先从指定的缓存位置加载图片 提高加载图片的速度
            .thumbnail(0.1f)//缩略图
            .transform(CenterCrop(), RoundedCorners(radius))
            .into(imageView)
    }

    /**
     * 加载本地资源图片
     */
    fun loadResImage(view: View, resId: Int, imageView: ImageView) {
        Glide.with(view)
            .load(resId)
            .skipMemoryCache(true)
            .transform(CenterCrop())
            .into(imageView)
    }

}